package Providers

import (
	"flag"
	"net"

	"hyper/config"
	"hyper/supports/configs"
	"hyper/supports/path"
	"hyper/supports/redis"
)

func init() {
	// 配置自动加载
	config.Initialize()
}

func AppBoot() {
	// 配置
	setConfig()
	// 初始化 Redis
	SetupRedis()
	// 初始化 路径方便备用
	path.DirInit()
}

func setConfig() {
	// 配置初始化，依赖命令行 --env 参数
	var env string
	flag.StringVar(&env, "env", "", "加载 .env 文件，如 --env=testing 加载的是 .env.testing 文件")
	flag.Parse()
	configs.InitConfig(env)
}

// 初始化 Redis
func SetupRedis() {

	// 建立 Redis 连接
	redis.ConnectRedis(
		net.JoinHostPort(configs.GetString("queue.redis.host"), configs.GetString("queue.redis.port")),
		configs.GetString("queue.redis.username"),
		configs.GetString("queue.redis.password"),
		configs.GetString("queue.redis.prefix"),
		configs.GetInt("queue.redis.database"),
	)
}
